Skip to content

Expose ACP versions of the base/script/user paths #76

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

zao
Copy link
Contributor

@zao zao commented Jun 28, 2025

This PR makes the three path query functions also expose an ACP encoding of the path if possible. The user path query can now also return a human-readable reason when it can't be obtained from the OS.

This is useful for scripts as they can now tell if paths can be expressed in the user's codepage.

This enables an use case in the update preparation logic where it can form absolute paths if the path is entirely within the ACP. When relative paths were in use there to work around that the path could be unspellable, the wrong directory could be operated on thanks to filesystem virtualisation.

zao added 2 commits June 28, 2025 20:13
The standard encoding for all the top level paths (base, script, user)
in SimpleGraphic is UTF-8. For some purposes it's useful to know if the
path can be expressed in the user's active codepage as well, the updater
can use it to form absolute paths that the OS understands.

As the user path is fallible, we also expose a human-readable reason as
to why it could not be obtained.

All paths are made weakly canonical rather than fully canonical as the
full flavour requires paths to fully exist.
Whenever an invalid code unit was detected, a placeholder should be
emitted. This change fixes a bug where it also wrote out the original
code unit as-is.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant